/*
 * input.c
 *
 * Controle dos dispositivos de entrada do SO.
 * Definicoes de Buffer e captura de caracteres do teclado
 *
 *  Created on: 09/09/2010
 *      Author: Wendell
 */

#include <io.h>
#include <keyboard.h>

Buffer *kb = &keyboardBuffer;

// Pega um char do teclado
uchar getchar() {
	while(TRUE){
		if(!bufferIsEmpty(kb)){
			uchar c = bufferPop(kb);
			if(c >= ' ' || c=='\n' || c==0x08) { //backspace
				putchar(c);
				return c;
			}
		}
	}
}

//Le uma string e grava em s[]
void gets(char *s) {

	flush(kb);
	char *i = s;
	do {
		*i = getchar();
	}
	while((*i++)!='\n');

	*(i-1) = '\0'; //limpa o '\n'
}
